/**
 * 后台管理员的业务逻辑代码
 */

const db = require("../../db/db")
const initModel = require("../../models/init-models")
const {admin} = initModel(db);

// 引入md5加密
let md5 = require("../../config/crypto");
// 引入生成token中间件
let jwt = require('jsonwebtoken');

module.exports = {
  // 登录
  login: async (req, res) => {
    // 获取数据
    let {admin_name, password} = req.body;
    // 判断是否为空
    if (admin_name == null || password == null) {
      res.send({
        status: 400,
        msg: "部分参数缺少"
      });
      return;
    }
    password = md5(password);
    // 是否存在该用户并用户名/密码是否正确
    let findUser = await admin.findOne({
      where: {
        admin_name,
        password,
      }
    })
    if (findUser == null) {
      // 用户/密码不匹配
      res.send({
        status: 400,
        msg: "用户名或密码错误"
      })
      return;
    }
    // 生成token
    let token = 'Bearer ' + jwt.sign(
        {admin_name, id: findUser.id, superAdmin: true},
        'luckToken',
        {expiresIn: '24h'}
    )
    // 返回登录成功
    findUser.password = undefined;
    res.send({
      status: 200,
      msg: "登录成功",
      token,
      data: findUser,
    })
  },
  // 修改密码
  resetPass: async (req, res) => {
    // 获取数据
    let {id, password} = req.body;
    // 判断是否传值
    if (id == null || password == null) {
      res.send({
        status: 400,
        msg: "缺少参数"
      })
      return;
    }
    // 加密
    password = md5(password);
    // 查询是否有该用户
    let findUser = await admin.findOne({where: {id}});
    if (findUser == null) {
      res.send({
        status: 205,
        msg: "该用户不存在"
      });
      return;
    }

    // 修改密码
    findUser.password = password;
    await findUser.save();
    res.send({
      status: 200,
      msg: "修改成功"
    })
    res.send("324")
  },
}